Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

D8-WebMonitor - Руководство администратора

Назначение

D8-WebMonitor - это web-версия мониторинга системы Дельта (web-мониторинг), с помощью которой можно запускать сессии D8-Monitor удаленно на сервере через протокол HTTP/HTTPS.

На сервере D8-WebMonitor устанавливается как приложение IIS (Internet Information Services). Помимо IIS может использоваться другой web-сервер (например, web-сервер CS-MonitorHttpServer).

Кроме функций предоставления web-интерфейса для пользователей, D8-WebMonitor может применяться в качестве прокси для организации канала связи HTTP поверх нативных протоколов системы Дельта (ClientLL + SQL).

Описание работы

Для работы web-мониторинга нужно создать и настроить web-сайт на сервере IIS или другом web-сервере.

Веб-мониторинг загружает основные настройки из файла web.config из секции appSettings.
Дополнительные настройки и состояния сессий пользователя веб-мониторинг хранит в отдельной папке состояний в файлах и папках.
Список пользователей и групп пользователей загружается из файла Login.xml из папки состояний веб-мониторинга.
Также список пользователей, зарегистрировавшихся через сайт (если это функция используется), хранится во временном файле Users.xml в папке состояний веб-мониторинга.

Журнал событий

Сообщения, относящиеся к работе серверной части web-мониторинга, выводятся в журнал событий Windows в лог DeltaLog.

Для регистрации журнала событий необходимо выполнить:

%systemroot%\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe

Настройка сайта IIS

  • Установить .NET 4.x.
  • Установить роли ОС, необходимые для работы IIS (см. ниже).
  • Если ASP.NET не зарегистрирован (ошибка PageHandlerFactory), выполнить регистрацию:
    %systemroot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
  • Создать корневую папку с документами сайта (стандартный путь - C:\DELTA_WEB).
  • Запустить оснастку администрирования IIS (IIS Manager).
  • В оснастке администрирования IIS создать сайт для web-мониторинга.
  • Прописать путь до корневой папки сайта.
  • В корневую папку сайта скопировать документы сайта (delta_bin\D8V4\d8_monitor_web). В числе которых:
    • monitor.aspx - документ для ASP.NET, через который идут все web-запросы (в том числе прокси-мониторинга);
    • favicon.ico - иконка сайта для избранного;
    • Global.asax - настройки для вызова обработчиков при закрытии сессий и т.п.;
    • web.config - файл конфигурации web-приложения ASP.NET, где также хранятся все настройки web-мониторинга.
  • В корневой папке создать подпапку bin и скопировать в нее исполняемые файлы мониторинга и папку встроенных ресурсов мониторинга (delta_bin\D8V4\d8_monitor).
    Вместо копирования бинарников D8 Monitor в папку C:\DELTA_WEB\bin можно использовать символическую ссылку. Например:
      CD C:\DELTA_WEB
      MKLINK /H bin C:\DELTA_CLIENT\BIN
      

    Если предполагается использовать доступ к инстансам через устаревшее COM-API, то необходимо скопировать еще и эти сборки:
    • d8_nativeclient.dll
    • Interop.D8_CLASSLIBLib.dll
    • Interop.D8_PROXY2.dll
    • Interop.d8_rdglibraryLib.dll
  • Создать папку состояния web-мониторинга с доступом на запись для сохранения состояния сессий web-сервера и прописать путь до нее в файле конфигурации web.config (см. ниже). Стандартный путь - C:\DELTA_WEBSTATE.
  • Создать в папке для сохранения состояний файл Login.xml с настройками доступа пользователей. Если в файле web.config указан путь до файла со списком конфигураций, имя и пароль, то web-мониторинг может работать и без файла Login.xml (подробнее см. ниже).
  • Разместить на сайте ссылку для входа в web-мониторинг:
    monitor.aspx?c=WebGraph&p=

    Если требуется вход через корень сайта, то можно скопировать в корень сайта default.aspx и заходить через / или default.aspx. Также default.aspx можно переименовать.

Общая схема файлов web-сайта:

   \DELTA_CLIENT                  - папка клиентской части Дельта
      \BIN                        - исполняемые файлы и внутренние ресурсы D8-Monitor
   \DELTA_WEB                     - корневая папка сайта D8-WebMonitor
      \bin                        - исполняемые файлы D8-WebMonitor - ссылка на C:\DELTA_CLIENT\BIN
         \InternalResources       - внутренние ресурсы мониторинга
         d8_monitorwebserver.dll  - исполняемые файлы мониторинга
         ...
      \Patterns                   - настройки представления элементов управления интерфейса web-мониторинга
      monitor.aspx                - документы сайта ASP.NET
      Global.asax
      favicon.ico
      web.config
   \DELTA_WEBSTATE               - папка для состояния web-мониторинга
      \Users
         \...                     - временные папки с состояниями сессий пользователей
      Login.xml                   - настройками доступа пользователей
      Users.xml                   - временный файл с зарегистрировавшимеся пользователями
      ...

Файл Login.xml

В файле Login.xml хранятся имена и пароли доступа для пользователей и групп пользователей, а также пути до файлов списков конфигураций мониторинга, которые пользователи будут просматривать (см. ниже).

<Login>
    <!-- Список зарегистрированных пользователей
    Кроме того, сервер хранит еще один списко зарегистрированных пользователей в отдельном файле Users.xml
    -->
    <Users>
        <!-- Для каждого пользователя указывается:
            Login, Password - имя и пароль входа в профиль на сайте, если имя указано: *, то будет производить авторизацию через плагин
            Group - группа, к которой относится пользователь -->
        <User Login="asd" Password="" Group="grp1"/>
    </Users>
    <!-- Список групп пользователей 
        Каждый зарегистрированный пользователь относится к группе    
    -->
    <Groups>
        <!-- Для каждой группы указывается имя и пароль входа Login, Password -->
        <Group Login="grp1" Password="1">
            <!-- Список доступных для просмотра файлов конфигураций мнемосхем -->
            <ConfigListOptions>
                <!-- Для каждого файла конфигураци указывается путь Url -->
                <ConfigList Url="MonitorTest2\Data\monitor.configlist">
                    <!-- Список доступных для просмотра конфигураций в файле со списком конфигураций мнемосхем -->
                    <ConfigOptions>
                        <!-- Для каждой конфигурации указывается:
                            Index - индекс в файле списка,
                            ConfigName - имя для отображения в интерфейсе сайта,
                            Login, Password - логин и пароль от серверов системы Дельта
                            Offline - если равно true, то будет отображаться без подключения к серверу
                        -->
                        <Config Index="0" ConfigName="БГРЭС полная конфигурация" Login="delta" Offline="true" />
                        <Config Index="1" ConfigName="Куча параметров" Offline="True"/>
                    </ConfigOptions>
                </ConfigList>
            </ConfigListOptions>
        </Group>

        <!-- Для всех пользователей с windows-авторизацией-->
        <Group Login="\">
            <!-- Список доступных для просмотра файлов конфигураций мнемосхем -->
            <!-- ... -->
        </Group>

        <!-- Для всех пользователей, но в Дельту будет заходить с именем и паролем пользователя-->
        <Group Login="*">
            <!-- Список доступных для просмотра файлов конфигураций мнемосхем -->
            <!-- ... -->
        </Group>

        <!-- Пользователь домена будет отнесен к группе если у него одна из доменных ролей (групп) соответствует указанной в группе -->
        <Group Login="Администраторы, Пользователи домена" InRole="true">
            <!-- Список доступных для просмотра файлов конфигураций мнемосхем -->
            <!-- ... -->
        </Group>

    </Groups>
</Login>

Файл web.config

Пример настроек файла web.config

<?xml version="1.0"?>
    <configuration>
        <appSettings>
            <!-- 
            Эта секция содержит настройки веб-мониторинга, которые загружаются при первом обращении к сайту 

            Формат такой
                <add key="имя параметра" value="значение параметра"/>

            Описание параметров:
            log - выдавать сообщения об ошибках в системный журнал (true, false)
            statefolder - путь до папки в которую будут сохраняться состояния сессий и всякие временные файлы (нужен доступ на запись)
            logfile - имя текстового файла для выдачи сообщений об ошибках (не обязательно)

            configlist - имя файла конфигураций мнемосхем мониторинга по умолчанию, если другое не указано в файле с настройками групп пользователей
            index - индекс конфигурации в файле конфигураций мнемосхем мониторинга по умолчанию (для параметра configlist)
            login - имя пользователя по умолчанию (если нужен вход без авторизации), если имя указано: *, то будет производить авторизацию через плагин
            password - пароль пользователя по умолчанию (если нужен вход без авторизации)  
            winauth - будет использоваться windows авторизация (может быть либо windows авторизация - либо обычная) (true, false)
            configlogin - имя пользователя для входа в конфигурацию, только если не используется файл login.xml
            configpassword - пароль пользователя для входа в конфигурацию, только если не используется файл login.xml
            DebugClient - выводить на веб-странице дополнительную отладочную информацию (true, false), по умолчанию false
            plugin - подключить сборку с плагином (указать имя сборки без расширения .dll)
            lang - язык вывода интерфейса и мнемосхем (например, английский: en, по умолчанию: ru)
            AllowRegister - разрешать регистрацию пользователей на странице авторизации (true, false), по умолчанию false
            ServerName - имя сервера которое будет указываться в логах, чтобы в логах отличать несколько серверов
            templatefolder - папка с шаблонами оформления веб-сайта (кнопки главного меню, страница авторизации и т.д.)
            AutoStretch - автоматически растягивать мнемосхемы по размеру окна браузера (true, false), по умолчанию true
            OpenNewWindow - открывать графики, таблицы и пр. в новой вкладке (может блокироваться некоторыми браузерами) (true, false), по умолчанию false
            expertmode - отображать доп. информацию для опытных пользователей
            -->
            <add key="log" value="false"/>
            <add key="statefolder" value="d8_monitorwebserver/WebState"/>
            <add key="logfile" value="d8_monitorwebserver/WebState/log.txt"/>
            <add key ="configlist" value="MonitorTest2\Data\monitor.configlist"/>        
            <add key="login" value="asd"/>
            <add key="password" value=""/>
        </appSettings>
        <connectionStrings/>
        <system.web>
            <!-- Это означает закрывать сессию после 1 минуты бездействия -->
            <sessionState timeout="1"/>
            <compilation debug="true">
                <assemblies>
                    <!-- Сборки с плагинами можно загрузить здесь -->
                    <!--<add assembly="d8_monitor.chkts_heat_report" />-->
                </assemblies>
            </compilation>
            <authentication mode="Windows"/>
        </system.web>
    </configuration>

Настройка Windows Server

Для работы IIS необходим следующий минимальный набор ролей ОС:
  • Веб-сервер
    • Основные возможности
      • Статическое содержимое
      • Стандартный документ
      • Обзор каталогов
      • Ошибки HTTP
    • Разработка приложений
      • ASP.NET
      • Расширяемость .NET
      • Расширения ISAPI
      • Фильтры ISAPI
    • Безопасность
      • Windows - проверка подлинности
      • Фильтрация запросов
    • Средства управления
      • Консоль управления IIS

Использование windows-аутентификации

  • Чтобы IE не спрашивал каждый раз имя и пароль надо изменить настройку "Автоматический вход в сеть только в зоне интрасети" или добавить сайт руками в зону "Местная интрасеть" (Узлы > дополнительно) (хотя может и сам определит), учесть что для "Зоны интрасети" нужно отключить "Параметры отображения совместимости > Отображать узлы интрасети в режиме представления совместимости".
  • В браузере нужно обязательно заходить на сайт по доменному имени web-сервера, а не по IP-адресу (например: webserver.complexsystems.local).
  • Добавить компьютер с сервером IIS в домен.
  • В настройках Active Directory на контроллере домена настроить делегирование прав для данного компьютера.
  • Запускать пул приложений только от ApplicationPoolIdentity (возможно не сработает), Network Service или SYSTEM, т.к. только эти учетные записи в домене могут получать делегирование с сетевыми правами доступа.
  • (возможно) SQL-сервер запускать или с системной учетной записью или с доменным администратором (нужно для регистрации SPN).
  • Время на часах всех серверов должно быть одинаковым до минуты, иначе возникнут проблемы (сообщения в системном логе KDC_ERR_BADOPTION, KDC_AP_ERR_SKEW).
  • В настройках доступа для web-сайта (на странице "Проверка подлинности") включить аутентификацию Windows и олицетворение ASP.NET, а Анонимную проверку подлинности отключить:
      <system.web>
        <authentication mode="Windows" /> 
        <identity impersonate="true" />
      </system.web>
      
  • В файлы настроек
      C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
      C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
      

    вписать:
      <legacyImpersonationPolicy enabled="false"/>
      <alwaysFlowImpersonationPolicy enabled="true"/>
      

    По умолчанию там стоит true. Это нужно для передачи прав пользователя в параллельные потоки через класс Task.
    Есть еще возможность в ISS 7.5 задать файл настроек aspnet.config отдельно для каждого пула приложений (см. инет)
  • Для ошибки "Обнаружены значения параметров ASP.NET, которые неприменимы в интегрированном режиме управляемого конвейера." настроить в web.config
        <system.webServer>
            <validation validateIntegratedModeConfiguration="false"/>
        </system.webServer>
      

    чтобы не возникало ошибок несовместимости с режимом Integrated пула приложений.
  • Дать пользователям, которые будут заходить, доступ к папке WebState, лог-файлу
  • Может быть либо windows-аутентификация, либо обычная. Одновременно не работает, надо создавать отдельные сайты.
  • В файле web.config указать что используется windows-аутентификация:
      <appSettings>
         <add key="winauth" value="true" />
      </appSettings>
      
  • Посмотреть отладочную информацию по текущему удостоверению пользователя можно по адресу ниже. На этой странице свойство ImpersonationLevel должно быть Delegation, иначе не работает.
      monitor.aspx?c=WebWinAuth
      

     
  • Вновь созданные потоки в ASP.NET по умолчанию не получают учетные данные от родительского потока, надо это учитывать.
  • Есть утилита для ASP.NET для помощи настройки windows-аутентификации. Устанавливается прямо на сайт и открывается из браузера.
    Ссылка: http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/delegconfig-delegation-configuration-reporting-tool.aspx
  • Права делегирования (тикеты) кешируются на компьютере. У них есть срок годности. Поэтому настройки на сервере домена могут не применяться сразу.
    Чтобы удалить кешированые права для текущего пользователя нужно выполнить:
    klist purge

    для LOCALSYSTEM:
    klist -li 0x3e7 purge

    для NETWORK SERVICE:
    klist -li 0x3e4 purge

    Тикет TGT удалить командой klist нельзя. Его таймаут по умолчанию 10 минут. Нужно подождать 10 минут, пока будет запрошен новый TGT и новые настройки делегирования вступят в силу (или перезагрузить компьютер).
  • Пример настройки ограниченного делегирования:
    • На контроллере домена в настройках для web-сервера указать:
      • "Trust this computer for delegation to specified services only".
      • "Use any authentication protocol". Здесь можно указать и "Use Kerberos only", но тогда делегирование прав на сетевые папки может не работать (см. https://support.microsoft.com/en-us/kb/2602377).
    • В список разрешенных служб добавить:
      • MSSQLSvc/DBSRV.domain.net:1433 для сервера БД
      • CIFS/FILESRV.domain.net для сервера, где размещены нужные сетевые папки

Инструменты для отладки

  • monitor.aspx?c=WebWinAuth
    Просмотр отладочной информации по текущему удостоверению пользователя.
  • monitor.aspx?c=WebTraceLog
    Просмотр отладочного лога.
  • monitor.aspx?c=WebState
    Просмотр текущих открытых сессий.
  • monitor.aspx?c=WebGraph&p=%23WebServer.EventLogDialog
    Просмотр журнала событий Windows (необходима авторизация).
  • monitor.aspx?c=WebGraph&p=%23WebServer.SessionStateDialog
    Просмотр и управление текущими открытыми сессиями.
  • monitor.aspx?c=c
    Список ссылок на различные отладочные инструменты, в том числе описанные выше

Особенности работы

Использование устаревших макетов отчетов

Если используются макеты отчетов на основе устаревшего COM-API, то для построения отчетов из web-мониторинга необходимо на сервере, на котором развернут web-мониторинг, установить MS Excel.

Чтобы автоматизация Excel работала на серверной ОС необходимо создать папки:

C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\Sysnative\config\systemprofile\Desktop

Если не отображаются страницы web-мониторинга

Если вход пользователя выполняется, но страницы не отображаются:
  • Проверить не включился ли в IE режим отображения в "Режиме совместимости".
  • Проверить не блокируются ли cookies. Если блокируются то сессия пользователя будет постоянно пересоздаваться.

История версий

  • 4.2.21.0813
    • Изменения в названиях
  • 4.2.21.0803
    • Изменения под новые сборки
  • 4.2.20.0417
    • Переход на новые сборки
  • 4.2.18.1220
    • Переделана выдача файлов чтобы не дописывались переводы строк в конце
  • 4.1.15.1125
    • Авторизация по доменной роли (группе).
  • 4.1.15.1125
    • Авторизация по доменной роли (группе).
  • 1.0.13.0411
    • Реализована отправка клиенту сообщений об ошибках при загрузке файлов ресурсов и чтении архивов.
  • 1.0.13.0402
    • Множество исправлений для разных браузеров.
  • 1.0.12.1122
    • Первая версия.